package org.rainbowinverted.charging.device.connect.bl.server.util;

/**
 * 序列号生成器
 *
 * @author huaiping
 */
public class SerialNumberGenerator {
    /**
     * 最大序列号
     */
    private static final Long MAX_SEQUENCE = 0xFFFFL;
    /**
     * 当前序列号
     */
    private static Long currentSequence = 0L;

    /**
     * 下一个序列号
     *
     * @return {@link Long}
     */
    public static synchronized Long nextSerialNumber() {
        if (currentSequence >= MAX_SEQUENCE) {
            // 序列号达到最大值后重新开始
            currentSequence = 0L;
        } else {
            // 自增序列号
            currentSequence++;
        }
        // 将序列号转换为十六进制字符串
        return currentSequence;
    }

    private SerialNumberGenerator() {}
}
